import cv2

import os

# 将人名映射到标签索引
label_to_index = {
    "me": 0,
    "lrx": 1,
    "txy": 2,
    "cls": 3,
    "you": 4
}

def resize_image(image, size=(300, 300)):
    """
    将图像调整至指定大小。
    """
    return cv2.resize(image, size, interpolation=cv2.INTER_AREA)

def display_image(image, name):
    # 显示图像，并在窗口标题中显示人名
    cv2.imshow(name, image)
    cv2.waitKey(0)  # 等待按键后关闭窗口
    cv2.destroyAllWindows()

#根据给定的人名加载图像，并显示在窗口中
def get_image_by_name(name, directory="ren", image_count=101):
    #检查给定的人名是否存在于 label_to_index 字典中
    if name not in label_to_index:
        print(f"未找到名为 {name} 的人。")#打印错误信息
        return None

    index = label_to_index[name]
    image_list = []
    missing_images = []  # 记录缺失的图片信息

    for i in range(1, image_count + 1):
        img_path = os.path.join(directory, str(index), f"{i:03d}.jpg")  # 使用格式化字符串
        #检查图像文件是否存在
        if os.path.exists(img_path):
            img = cv2.imread(img_path)
            #检查读取的图像是否为空
            if img is not None:
                grayImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
                grayImg_resized = resize_image(grayImg)
                display_image(grayImg_resized, f"{name}'s Photo")  # 显示人名和图片
                image_list.append(grayImg_resized)  # 将调整后的图像添加到列表中
            else:
                print(f"图片 {img_path} 读取失败，文件可能损坏或格式不正确。")
        else:
            missing_images.append(img_path)  # 记录缺失的图片路径

    if missing_images:
        return image_list